import requestAPI from '../../utils/requestApi'
const app = getApp();
Page({
  data: {
    news: 0,
    userInfo: null,
    nickName: null,
    welcomeText: "请点击头像登录",
    avatarUrl: 'https://img0.baidu.com/it/u=3204281136,1911957924&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500',
    userInfo_tank: false,
    isPopupVisible: false,
    popupAnimation: {},
    isLoggedIn: false, // 标识用户是否已登录
    isModalVisible: false,
    userKey: '',
    newmsgList: [],
    hasNewMessage: false,
  },
  onShow: function () {
    // 调用history组件的refreshHistory方法
    this.selectComponent('#historyComponent').fetchHistory('scenic');


    const app = getApp();
    // 根据本地模拟的未读活动消息数量判断是否在右上角显示红圈及数量
    if (app.globalData.unreadActivityCount > 0) {
      wx.showTabBarBadge({
        index: 2 // 假设“我的”页面在tabBar中的索引是2
      });
      wx.setTabBarBadge({
        index: 2,
        text: app.globalData.unreadActivityCount.toString()
      });
    } else {
      wx.removeTabBarBadge({
        index: 2
      });
    }
  },

  onLoad(options) {
    this.getMessageNotifications();
    this.checkLoginStatus();
    this.updateAvatarFromGlobalData();
    // 监听本地存储的变化
    wx.getStorage({
      key: 'user',
      success: (res) => {
        const userInfo = res.data;
        this.setData({
          avatarUrl: userInfo.avatarUrl,
          nickName: userInfo.nickName,
          isLoggedIn: true
        });
      },
      fail: () => {
        // 如果本地存储中没有用户信息，则设置为未登录状态
        this.setData({
          isLoggedIn: false
        });
      }
    });
  },
  getMessageNotifications: function () {
    const userKey = wx.getStorageSync('userKey');
    const apiUrl = `/travel/actives/newNotices?userKey=${userKey}`;
    requestAPI.get(apiUrl).then(res => {
      if (res.data) {
        this.setData({
          newmsgList: res.data
        });
        console.log(435, this.data.newmsgList)
        if (this.data.newmsgList.length > 0) {
          app.globalData.hasNewMessage = true;

          this.setData({
            hasNewMessage: true,
            news: this.data.newmsgList.length
          });

        }
      } else {
        console.error('后端返回数据格式不符合预期');
      }
    }).catch(err => {
      console.error('请求后端消息通知接口失败：', err);
    });
  },
  checkLoginStatus() {
    const userInfo = wx.getStorageSync('user');
    const userKey = wx.getStorageSync('userKey');

    this.setData({
      isLoggedIn: !!userInfo // 如果 userInfo 存在，则用户已登录
    });

    if (this.data.isLoggedIn) {
      this.setData({
        avatarUrl: userInfo.avatarUrl,
        nickName: userInfo.nickName,
        welcomeText: userInfo.nickName ? `${userInfo.nickName}` : "点击头像登录"
      });
    } else if (userKey) {
      // 如果存在 userKey 但未填写完整信息，则弹出授权弹窗
      this.setData({
        userInfo_tank: true
      });
    }
  },
  updateAvatarFromGlobalData() {
    // 这里可以添加从全局数据中更新头像的逻辑
  },
  tank(e) {
    if (!this.data.userInfo_tank) {
      // 获取登录凭证 code
      wx.login({
        success: res => {
          if (res.code) {
            // 使用封装的 API 方法
            requestAPI.post('/travel/login', {
              code: res.code
            }).then(response => {
              if (response.code === 200 && response.data && response.data.length > 0) {
                const user = response.data[0]; // 假设 data 是数组，取第一个用户信息
                const {
                  userKey
                } = user;

                // 存储 userKey 到本地
                wx.setStorageSync('userKey', userKey);

                // 检查用户是否已填写头像和昵称
                const userInfo = wx.getStorageSync('user');
                if (!userInfo || !userInfo.avatarUrl || !userInfo.nickName) {
                  // 如果用户未填写头像和昵称，则弹出授权弹窗
                  this.setData({
                    userInfo_tank: true // 显示弹窗
                  });
                } else {
                  // 如果用户信息已存在，直接更新页面
                  this.setData({
                    userInfo: userInfo,
                    avatarUrl: userInfo.avatarUrl,
                    nickName: userInfo.nickName,
                    isLoggedIn: true
                  });
                }
              } else {
                console.error('获取 userKey 失败：', res.data);
              }
              fail: err => {
                console.error('网络请求失败：', err);
              }
            });
          } else {
            console.error('获取用户登录态失败！' + res.errMsg);
          }
        }
      });
    } else {
      this.setData({
        userInfo_tank: false
      });
    }
  },
  // 获取微信头像
  onChooseAvatar(e) {
    this.setData({
      avatarUrl: e.detail.avatarUrl
    });
  },
  // 获取昵称
  getNickName(e) {
    this.setData({
      nickName: e.detail.value
    });
  },
  submit(e) {
    if (!this.data.avatarUrl) {
      return wx.showToast({
        title: '请选择头像',
        icon: 'error'
      });
    }
    if (!this.data.nickName) {
      return wx.showToast({
        title: '请输入昵称',
        icon: 'error'
      });
    }

    // 准备用户信息数据
    const user = {
      avatarUrl: this.data.avatarUrl,
      nickName: this.data.nickName,
      userKey: wx.getStorageSync('userKey') // 从本地存储获取 userKey
    };

    // 使用封装的 API 方法
    requestAPI.post('/travel/update', user).then(response => {
      if (response.code === 200) {
        wx.showToast({
          title: '授权成功',
          icon: 'success'
        });

        // 更新本地和页面状态
        wx.setStorageSync('user', user); // 存储到本地
        this.setData({
          userInfo: user,
          avatarUrl: user.avatarUrl,
          nickName: user.nickName,
          isLoggedIn: true, // 设置为已登录状态
          userInfo_tank: false, // 关闭弹窗
          welcomeText: `欢迎 ${user.nickName}`
        });
        setTimeout(() => {
          wx.navigateTo({
            url: '/pages/information/information',
          });
        }, 1000);
      } else {
        console.error('后端存储失败：', res.data);
      }
      fail: err => {
        console.error('网络请求失败：', err);
      }
    });
  },
  // 关闭弹窗
  closeTank: function () {
    this.setData({
      userInfo_tank: false
    });
  },
  logout() {
    wx.removeStorageSync('user');
    wx.removeStorageSync('userKey');
    this.setData({
      isLoggedIn: false, // 用户登出后，设置为未登录状态
      userInfo_tank: false // 确保弹窗关闭
    });
    wx.reLaunch({
      url: '/pages/my2/my2',
    });
  },
  // 历史浏览功能
  historyClick() {
    wx.navigateTo({
      url: '/pages/history/history',
    })
  },
  checkLoginStatus() {
    const userInfo = wx.getStorageSync('user');
    const userKey = wx.getStorageSync('userKey');

    this.setData({
      isLoggedIn: !!userInfo // 如果 userInfo 存在，则用户已登录
    });

    if (this.data.isLoggedIn) {
      this.setData({
        avatarUrl: userInfo.avatarUrl,
        nickName: userInfo.nickName,
        welcomeText: userInfo.nickName ? `欢迎 ${userInfo.nickName}` : "欢迎使用，请点击头像授权登录"
      });
    } else if (userKey) {
      // 如果存在 userKey 但未填写完整信息，则弹出授权弹窗
      this.setData({
        userInfo_tank: true
      });
    }
  },
  // 基本信息
  basicClick() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 1000
      });
      return;
    }
    wx.navigateTo({
      url: '/pages/information/information',
    });
  },
  // 收藏
  favoriteClick() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 1000
      });
      return;
    }
    wx.navigateTo({
      url: '/pages/favorite/favorite',
    });
  },
  // 反馈点击
  feedbackClick() {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 1000
      });
      return;
    }
    wx.navigateTo({
      url: '/pages/ucenter/feedback/feedback',
    });
  },
  messageClick() {
    const userKey = wx.getStorageSync('userKey');
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '请先登录',
        icon: 'none',
        duration: 1000
      });
      return;
    }
    wx.navigateTo({
      url: '/pages/notice/notice?userKey=' + userKey,
    });
    const app = getApp();
    app.setHasNewMessage(false);
    this.setData({
      hasNewMessage: false,
      news: 0
    });
  },
  // 显示或隐藏弹窗
  toggleModal: function () {
    wx.showModal({
      title: '湘村行客服热线',
      content: '需要帮助吗？点击“拨打”即可联系我们的客服团队',
      confirmText: '拨打',
      cancelText: '取消',
      success: function (res) {
        if (res.confirm) {
          // 用户点击确定时拨打电话
          this.makePhoneCall();
        } else if (res.cancel) {
          // 用户点击取消时不执行任何操作
        }
      }.bind(this)
    });
  },

  // 拨打电话
  makePhoneCall: function () {
    wx.makePhoneCall({
      phoneNumber: '999999' // 这里填写实际的电话号码
    });
  },
  //退出登录按钮
  showLogoutModal: function () {
    if (!this.data.isLoggedIn) {
      wx.showToast({
        title: '未登录无法注销',
        icon: 'none',
        duration: 1000
      });
      return;
    }
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      confirmText: '退出登录',
      cancelText: '取消',
      success: function (res) {
        if (res.confirm) {
          // 用户点击了“退出登录”
          console.log('用户点击了退出登录');
          // 在这里添加退出登录的逻辑，例如清除登录状态等
          //userKey
          wx.removeStorageSync('user');
          wx.removeStorageSync('userKey');
          // 跳转回登录页面或其他页面
          wx.reLaunch({
            url: '/pages/index/index',
          });
        } else if (res.cancel) {
          // 用户点击了“取消”
          console.log('用户点击了取消');
        }
      }
    });
  }
});